package main

import (
	"errors"
	"fmt"
)

var a = 1

func main() {
	err := add(&a)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(a)
}

// 执行a++的操作，如果出现错误，就回滚a++的操作
func add(a *int) (err error) {
	defer func() {
		if err != nil {
			*a--
		}
	}()
	*a++
	if true {
		return errors.New("有错误")
	}
	fmt.Println("上面return的话这句不会执行")
	return
}
